package cn.com.yusys.yusp.admin.web.rest;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import cn.com.yusys.yusp.admin.domain.AdminSmDpt;
import cn.com.yusys.yusp.admin.domain.AdminSmUser;
import cn.com.yusys.yusp.admin.service.AdminSmDptService;
import cn.com.yusys.yusp.commons.exception.MessageConstants;
import cn.com.yusys.yusp.commons.mapper.QueryModel;
import cn.com.yusys.yusp.commons.service.CommonService;
import cn.com.yusys.yusp.commons.web.rest.CommonResource;
import cn.com.yusys.yusp.commons.web.rest.dto.ResultDto;

/**
 * 
 * @项目名称: yusp-admin
 * @类名称: AdminSmDptResource
 * @类描述: 
 * @功能描述: 部门管理
 * @创建人: chenlin2@yusys.com.cn
 * @创建时间: 2017年12月27日
 * @修改备注: 
 * @修改记录: 修改时间    修改人员    修改原因
 * -------------------------------------------------------------
 * @version 1.0.0
 * @Copyright (c) 2017宇信科技-版权所有
 */
@RestController
@RequestMapping("api/adminsmdpt")
public class AdminSmDptResource<T> extends CommonResource<AdminSmDpt, String>{
    
    @Autowired
    private AdminSmDptService service;
    public AdminSmDptResource(AdminSmDptService service) {
        super();
        this.service=service;
    }
    @Override
	protected CommonService getCommonService() {
		return this.service;
	}
    /**
     * 
    * @方法名称: getList
    * @方法描述: 部门查询
    * @参数与返回说明: 
    * @算法描述:
     */
    @GetMapping("/list")
	public ResultDto<List<AdminSmDpt>> getDptList(QueryModel queryModel) {
		List<AdminSmDpt> list = service.getDptByModel(queryModel);
		return new ResultDto<List<AdminSmDpt>>(list);
	}    
    /**
     * 
    * @方法名称: getUserList
    * @方法描述: 部门用户查询
    * @参数与返回说明: 
    * @算法描述:
     */
    @GetMapping("/userlist")
	public ResultDto<List<AdminSmUser>> getUserList(QueryModel queryModel) {
		List<AdminSmUser> list = service.getUserListByModel(queryModel);
		return new ResultDto<List<AdminSmUser>>(list);
	}

    /**
     *
     * @方法名称: insertDpt
     * @方法描述: 新增部门数据
     * @参数与返回说明:
     * @算法描述:
     */
    @PostMapping("/adddpt")
    public ResultDto<Integer> insertDpt(@RequestBody AdminSmDpt adminSmDpt) {
        int result = service.insertDpt(adminSmDpt);
        return new ResultDto<Integer>(result);
    }
    
    /**
     * 
    * @方法名称: deleteBatch
    * @方法描述: 批量删除
    * @参数与返回说明: 
    * @算法描述:
     */
    @PostMapping("/deletebatch")
    public ResultDto<Object> deleteBatch(@RequestBody Map<?,?> ids) {
        String[] idStr=ids.get("id").toString().split(",");
        return this.service.deleteBatch(idStr);
    }
    /**
     * 
    * @方法名称: useBatch
    * @方法描述: 批量启用
    * @参数与返回说明: 
    * @算法描述:
     */
    @PostMapping("/usebatch")
    public ResultDto<Object> useBatch(@RequestBody Map<?, ?> parmas) {
        String[] idStr=parmas.get("id").toString().split(",");
        String userId = parmas.get("userId").toString();
        int count = this.service.useIngFn(idStr,userId);
        ResultDto<Object> resultDto = new ResultDto<>();
        List<Object> i18nData = new ArrayList<Object>();
        resultDto.setCode(0);
        resultDto.setMessage("成功启用"+count+"条数据");
        i18nData.add(count);
        resultDto.setI18nData(i18nData);
        return resultDto;
    }

    /**
     * 
    * @方法名称: unUseBatch
    * @方法描述: 批量停用
    * @参数与返回说明: 
    * @算法描述:
     */
    @PostMapping("/unusebatch")
    public ResultDto<Object> unUseBatch(@RequestBody Map<?,?> parmas) {
        String[] idStr=parmas.get("id").toString().split(",");
        String userId = parmas.get("userId").toString();
        return this.service.unUseIngFn(idStr,userId);
    }
	/**
	 * 
	* @方法名称: checkCode
	* @方法描述: 检查部门编号是否重复
	* @参数与返回说明: 
	* @算法描述:
	 */
    @GetMapping("/checkdptcde")
    public int checkDptCode(@RequestParam(required = false) String dptCde){
    	return this.service.checkDptCode(dptCde);
    }
}
